home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / test / lib / fseek.c < prev    next >
C/C++ Source or Header  |  1992-11-23  |  2KB  |  93 lines

  1.  
  2. /*
  3.  *  fseek file
  4.  */
  5.  
  6. #include <stdio.h>
  7.  
  8. static char Buf[8192];
  9.  
  10. main(ac, av)
  11. char *av[];
  12. {
  13.     FILE *fi;
  14.     char buf[128];
  15.     long i1;
  16.     long i2;
  17.     long r;
  18.  
  19.     if (ac == 1) {
  20.     puts("fseek file");
  21.     exit(1);
  22.     }
  23.     fi = fopen(av[1], "r+");
  24.     if (fi == NULL) {
  25.     puts("open failed");
  26.     exit(1);
  27.     }
  28.     for (;;) {
  29.     printf("Command -");
  30.     fflush(stdout);
  31.     if (gets(buf) == NULL)
  32.         break;
  33.  
  34.     switch(buf[0]) {
  35.     case 'r':
  36.         i1 = atoi(buf + 1);
  37.         if (i1 >= 0 && i1 <= sizeof(Buf)) {
  38.         r = fread(Buf, 1, i1, fi);
  39.         printf("r = %d\n", r);
  40.         dump(Buf, r);
  41.         }
  42.         break;
  43.     case 'w':
  44.         i1 = atoi(buf + 1);
  45.         if (i1 >= 0 && i1 <= sizeof(Buf)) {
  46.         setmem(Buf, i1, buf[strlen(buf)-1]);
  47.         r = fwrite(Buf, 1, i1, fi);
  48.         printf("r = %d\n", r);
  49.         }
  50.         break;
  51.     case 's':
  52.         i1 = atoi(buf + 1);
  53.         strtok(buf + 1, " \t");
  54.         i2 = atoi(strtok(NULL, " \t"));
  55.         r = fseek(fi, i1, i2);
  56.         printf("%d = fseek(fi, %d, %d)\n", r, i1, i2);
  57.         break;
  58.     case 't':
  59.         printf("pos = %d\n", ftell(fi));
  60.         break;
  61.     case 'u':
  62.         printf("result = %d\n", ungetc('x', fi));
  63.         break;
  64.     case 'q':
  65.         exit(0);
  66.     default:
  67.         printf("r bytes         -read\n"
  68.            "w bytes c       -write\n"
  69.            "s off how       -seek\n"
  70.            "t               -tell\n"
  71.            "u               -ungetc\n"
  72.            "q               -quit\n"
  73.            "h               -help\n"
  74.         );
  75.         break;
  76.     }
  77.     }
  78. }
  79.  
  80. dump(ptr, bytes)
  81. unsigned char *ptr;
  82. long bytes;
  83. {
  84.     printf("<");
  85.     while (bytes > 0) {
  86.     printf("%c", *ptr);
  87.     --bytes;
  88.     ++ptr;
  89.     }
  90.     printf(">\n");
  91. }
  92.  
  93.